//声明变量的三种方式
void  main (){
  var   name1='张三';
  Object names2='李松';
  dynamic   name3='王五';

//变量默认值
  int   varl=3;
 assert(varl==null);
  print(varl);
//输出为   null

//3
  test();
  test2();
  test3();

}
void test(){
  //可以省略类型声明
  final name1 = "张三";
  //final String name1  = "张三";
  const name2 = "李四";
  //const String name2 = "李四"
}
void  test2(){
  final name1 = "张三";
  // 如果这样写，编译器提示：a final variable, can only be set once
  // 一个final变量，只能被设置一次。
  // 运算

}
void  test3(){
    const units = 60; //（单位: s/min）
    const seconds1 = units * 20; //秒数=60*分钟数 结果为：1200

    const minutes = 20; //20分钟
    const seconds2 = units * minutes; //秒数=60*分钟数 结果为：1200

    final speed1 = 100; //速度（km/h）
    final double distance1 = speed1 * 2.5; // 距离 = 速度*时间，结果为：250.0

    double time = 2.5;
    final double distance2 = speed1 * time; // 距离 = 速度*时间，结果为：250.0
}

void   test4(){
  var aNum = 0;
  var aBool = true;
  var aString = '这是String字符串';
  const aConstList = const [1, 2, 3];

  // const常量必须用const类型的值初始化。
  //这样用就会报错：Const variables must be initialized with a constant value
  // const invalidConstString = '$aNum $aBool $aString $aConstList';
  // 直接声明
  Map companys = {'first': '阿里巴巴', 'second': '腾讯', 'fifth': '百度'};
  print(companys); //打印结果 {first: 阿里巴巴, second: 腾讯, fifth: 百度}

  Map companys1 = new Map();
  companys1['first'] = '阿里巴巴';
  companys1['second'] = '腾讯';
  companys1['fifth'] = '百度';
  print(companys1); //打印结果 {first: 阿里巴巴, second: 腾讯, fifth: 百度}

  final fruitConstantMap = const {2: 'apple', 10: 'orange', 18: 'banana'};
  print(fruitConstantMap); // {2: apple, 10: orange, 18: banana}
}




